<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>83-冒泡排序</title>
    <script>
        // 冒泡排序
        // var arr = [5, 4, 3, 2, 1];
        var arr = [4, 1, 2, 3, 5];
        for (var i = 0; i <= arr.length - 1; i++) { // 外层循环管趟数
            for (var j = 0; j <= arr.length - i - 1; j++) { // 里面的循环管 每一趟的交换次数
                // 内部交换2个变量的值 前一个和后面的一个数组元素相比较
                if (arr[j] > arr[j + 1]) { // 如果是小于，由大到小排列
                    var temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        console.log(arr);
        // 老师写的外层多循环一次；里层循环，出现arr[5]，其它语言比如C#，数组越界，报错处理。
        
        // 冒泡排序 菜鸟教程
        // https://www.runoob.com/w3cnote/bubble-sort.html

        // 自写，根据原理摸索出来的：
        // ----------------------------------------------------------
        // var arr = [5, 4, 3, 2, 1, 0, 11, 1, 5, 8, 199, 0, 2];
        // var temp;
        // // arr.length-2+1 = arr.length-1
        // for (var j = 0; j < arr.length - 1; j++) {
        //     for (var i = 0; i < arr.length - 1 - j; i++) {
        //         if (arr[i] > arr[i + 1]) {
        //             temp = arr[i + 1];
        //             arr[i + 1] = arr[i];
        //             arr[i] = temp;
        //         }
        //     }
        // }
        // console.log(arr);
        // ----------------------------------------------------------
    </script>
</head>

<body>

</body>

</html>